<?php defined('BASEPATH') OR exit('No direct script access allowed');

class Pessoa_Model extends CI_Model {

	public function __construct()
	{
		parent::__construct();
	}
	
	public function inserir($data){
	
		$retorno = $this->db->insert('tb_pessoa', $data);
		
		if(!$retorno){
			throw new Exception('Ocorreu um erro ao inserir a Pessoa. Favor tentar novamente mais tarde.');
		}else{
			if($this->db->affected_rows() > 0){
				return $this->db->insert_id();
			}
		}
	}
	
	public function alterar($data, $id){
	
		$this->db->where('idPessoa', $id);
		$retorno = $this->db->update('tb_pessoa', $data);
		
		if(!$retorno){
			throw new Exception('Ocorreu um erro ao alterar a Pessoa. Favor tentar novamente mais tarde.');
		}else{
			return true;
		}
	}
	
	public function inativarPessoaPorIdPerfil($data, $idPerfil){
		
		$sql = "update tb_pessoa as pe
				inner join tb_usuario as usu on (usu.idUsuario = pe.idUsuario)
				set pe.idUsuarioUltimaAlteracao = ".$data['idUsuarioUltimaAlteracao'].",
					pe.dtUltimaAlteracao = '".$data['dtUltimaAlteracao']."',
					pe.dtVigenciaFim = '".$data['dtVigenciaFim']."'
				where pe.dtVigenciaFim is null
					  and usu.idPerfil = " .$idPerfil;
		
		$retorno = $this->db->query($sql);
	
		if(!$retorno){
			throw new Exception('Ocorreu um erro ao alterar a Pessoa. Favor tentar novamente mais tarde.');
		}else{
			return true;
		}
	}
	
	public function excluir($id){
	
		$this->db->where('idPessoa', $id);
		$retorno = $this->db->delete('tb_pessoa');
	
		if(!$retorno){
			throw new Exception('Ocorreu um erro ao excluir a Pessoa. Favor tentar novamente mais tarde.');
		}else{
			return true;
		}
	}
	
	
	function obter($id){
	
		$sql = "select *
				from tb_pessoa
				where idPessoa = ".$id;
	
		$query = $this->db->query($sql);
	
		if($query->num_rows() > 0){
			$obj = $query->result();
			
			return $obj[0];
		}else{
			return null;
		}
	}
	
	function obterPessoaAtivaPorUsuario($idUsario){
	
		$sql = "select pes.*
				from tb_usuario as usu
				left join tb_pessoa as pes on (pes.idUsuario = usu.idUsuario and pes.dtVigenciaFim is null)
				where usu.idUsuario = ".$idUsario;
	
		$query = $this->db->query($sql);
	
		if($query->num_rows() > 0){
			$obj = $query->result();
				
			return $obj[0];
		}else{
			return null;
		}
	}
	
	function obterPessoaPorUsuario($idUsario){
	
		$sql = "select pes.*
				from tb_usuario as usu
				left join tb_pessoa as pes on (pes.idUsuario = usu.idUsuario)
				where usu.idUsuario = ".$idUsario;
	
		$query = $this->db->query($sql);
	
		if($query->num_rows() > 0){
			$obj = $query->result();
	
			return $obj[0];
		}else{
			return null;
		}
	}
	
	function obterPessoaPorCpf($cpf, $idUsuario){
		$sql = "select pes.*
				from tb_usuario as usu
					inner join tb_pessoa as pes on (pes.idUsuario = usu.idUsuario)
				where pes.cpf = '".$cpf."' ";
		
		if (!empty($idUsuario)){
			$sql .= "and usu.idUsuario <> ".$idUsuario;
		}
		
		$query = $this->db->query($sql);
		
		if($query->num_rows() > 0){
			$obj = $query->result();
		
			return $obj[0];
		}else{
			return null;
		}
	}
}